package kgmyh.fileupload.controller;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kgmyh.fileupload.to.MultiUpFileTO;
import kgmyh.fileupload.to.SingleUpFileTO;

import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class FileUploadController extends MultiActionController {
	//하나 파일 upload 처리
	public ModelAndView singleFileUp(HttpServletRequest request, HttpServletResponse response, SingleUpFileTO sto)
			throws Exception{
		String dir = getServletContext().getRealPath("/upload");//실제경로를 조회하는 메소드("/")=application의 root를 의미
		MultipartFile mfile = sto.getUpfile();
		String comment = sto.getComment();//글입력
		//업로드된 파일 있다면 처리
		String fileName = null;
		String newFilename = System.currentTimeMillis()+"";
		if(!mfile.isEmpty()){
			//업로드된 파일 명 조회
			fileName = mfile.getOriginalFilename();
			//파일 size조회
			long fileSize = mfile.getSize();
			System.out.println("업로드 파일 정보 :" +fileName+" - "+fileSize+"byte");
			//영구 저장소로 이동
			File destination = new File(dir, newFilename);
			mfile.transferTo(destination);
		}
		HashMap map = new HashMap();
		map.put("comment", comment);
		map.put("newFilename", newFilename);//저장된 파일 네임
		map.put("upfile", fileName);//실제 파일 네임
		return new ModelAndView("res_single.jsp", map);
	}
	//여러 파일 업로드 처리
	public ModelAndView multiFileUp(HttpServletRequest request, HttpServletResponse response, MultiUpFileTO mto)
			throws Exception{
		String dir = getServletContext().getRealPath("/upload");
		List mFile = mto.getUpfile();
		String fileInfo = mto.getFileInfo();
		String fileName = null;
		ArrayList list = new ArrayList();
//		if(!mFile.isEmpty()){
//			for(int i=0; i<mFile.size(); i++){
//				MultipartFile mf = (MultipartFile)mFile.get(i);
//				fileName = mf.getOriginalFilename();
//				File destination = new File(dir, fileName);
//				mf.transferTo(destination);
//				list.add(fileName);
//			}
//		}
		for(int i=0; i<mFile.size(); i++){
			MultipartFile mf = (MultipartFile)mFile.get(i);
			if(!mf.isEmpty()){
				fileName=mf.getOriginalFilename();
				File destination = new File(dir, fileName);
				mf.transferTo(destination);
				list.add(fileName);
			}
		}
		HashMap map = new HashMap();
		map.put("upfile", list);
		map.put("fileInfo", fileInfo);
		return new ModelAndView("res_multi.jsp", map);
	}

}

